package com.demo.java.OD351_400.OD351;

import java.util.ArrayList;
import java.util.List;
import java.util.*;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【数字序列比大小(B卷)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146163700
 */
public class OdMain {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 输入数字序列的长度
        System.out.print("请输入数字序列的长度：");
        int s = scanner.nextInt();

        // 输入A的数字序列
        System.out.print("请输入A的数字序列：");
        List<Integer> s1 = new ArrayList<>();
        for (int i = 0; i < s; i++) {
            s1.add(scanner.nextInt());
        }

        // 输入B的数字序列
        System.out.print("请输入B的数字序列：");
        List<Integer> s2 = new ArrayList<>();
        for (int i = 0; i < s; i++) {
            s2.add(scanner.nextInt());
        }

        // 调用方法计算A可能赢B的最大分数并输出
        System.out.println("A可能赢B的最大分数：" + method(s1, s2));
    }

    static int method(List<Integer> s1, List<Integer> s2) {
        // 排序两个序列
        s1.sort(null);
        s2.sort(null);

        int score = 0;  // A的得分
        int i = 0;  // A的指针
        int j = 0;  // B的指针

        // 尝试匹配每个数字
        while (i < s1.size() && j < s2.size()) {
            if (s1.get(i) > s2.get(j)) {
                // A的数字大于B的数字，A得1分
                score++;
                j++;  // B的数字被用掉
            }
            // 不论A是否赢得这一轮，都移动A的指针
            i++;
        }

        return score;
    }
}